#ifndef _key_h_
#define _key_h_

#include "stdint.h"
#include "tim.h"

#define KEY_ACTIVE 0

typedef struct{
	u8 status;
	u8 status_old;
	u8 up;
	u8 down;
	
	u8 filter_start_timing;
	
	u32 filter_times;
	u32 filter_time;
	
	u32 click_times;
	u32 click_time;
	
	u32 clicks_times;
	u32 clicks_time;
	
	u8 clicks;
	u8 key_clicks;
	
	u8 long_press;
	
	u32 long_press_times;
	u32 long_press_time;
	
	u8 key_trigger;
}Key;

#define KEY_NUM  42
extern Key key_in[KEY_NUM];



void key_init(u32 _filter, u32 _click_times, u32 _clicks_times, u32 _long_press_times);
u8 key_update(Key* _key_ptr, u16 _s);
void key_logic(void);

#endif

